Alqor Bələdçisi — 5. Köçürmə Bələdçisi#

Artıq Python, JavaScript, C#, PHP və ya Java bilirsinizsə, bu cədvəllər sizi 30 dəqiqəyə Alqor-a keçirəcək.


5.1 Əsas konstruksiyalar — müqayisə cədvəli#

ƏməliyyatPythonJavaScriptC#Alqor
Ekrana yazprint(x)console.log(x)Console.WriteLine(x)yaz(x)
Dəyişənx = 5let x = 5int x = 5dəyişən x = 5
SabitX = 5const x = 5const int X = 5sabit X = 5
Şərtif x:if (x) {if (x) {əgər x onda
Əks halelse:} else {} else {yoxsa
Əks şərtelif x:} else if (x) {else if (x) {yoxsa əgər x onda
Blok sonugirinti}}son
Dövr (say)for i in range(5):for (let i=0;i<5;i++)for (int i=0;i<5;i++)hər i üçün 0..<5 içində
Dövr (siyahı)for x in lst:for (const x of a)foreach (var x in a)hər x üçün s içində
Şərtli dövrwhile x:while (x) {while (x) {nə qədər ki x
Funksiyadef f(a):function f(a) {int F(int a) {funksiya f(a)
Qaytarreturn xreturn xreturn xqaytar x
Sinifclass A:class A {class A {sinif A
Bu obyektselfthisthisözü
Baza sinifsuper()super()baseüst
Yeni obyektA()new A()new A()yeni A()
Mirasclass B(A):class B extends Aclass B : Asinif B miras A
Doğru/yanlışTrue/Falsetrue/falsetrue/falsedoğru/yanlış
BoşNonenullnullboş
Vəand&&&&və
Və yaor||||və ya
Deyilnot!!deyil
Trytry:try {try {cəhd et
Catchexcept E as e:catch (e) {catch (E e) {tut (e: E)
Finallyfinally:finally {finally {nəhayət
Throwraise E()throw new E()throw new E()at E()
Importimport mimport m from 'm'using M;gətir m
Siyahı[1,2,3][1,2,3]new[]{1,2,3}[1,2,3]
Lüğət{"a":1}{a:1}new Dictionary{"a":1}
Uzunluqlen(x)x.lengthx.Countuzunluq(x)
Lambdalambda x: x*2x => x*2x => x*2(x) => x*2
Asyncasync defasync functionasync Taskasinxron funksiya
Awaitawait xawait xawait xgözlə x
Formatf"{x}" `${x}` $"{x}""{x}"
Şərh#//////

5.2 Python-dan Alqor-a#

Nümunə 1 — sadə dövr#

python
# Python
for i in range(1, 6):
    print("Rəqəm:", i)
Alqor
// Alqor
hər i üçün 1..5 içində
    yaz("Rəqəm:", i)
son

Nümunə 2 — funksiya və siyahı#

python
# Python
def topla(sayilar):
    return sum(sayilar)

kvadratlar = [x**2 for x in range(10) if x % 2 == 0]
print(topla(kvadratlar))
Alqor
// Alqor
funksiya topla(ədədlər: siyahı[tam]) -> tam
    qaytar ədədlər.cəm()
son

dəyişən kvadratlar = [x ** 2 üçün x içində 0..<10 əgər x % 2 == 0]
yaz(topla(kvadratlar))

Nümunə 3 — sinif#

python
# Python
class Insan:
    def __init__(self, ad, yas):
        self.ad = ad
        self.yas = yas

    def tanit(self):
        print(f"Mən {self.ad}")
Alqor
// Alqor
sinif İnsan
    qurucu(açıq xassə ad: mətn, açıq xassə yaş: tam)

    metod təqdim()
        yaz("Mən {özü.ad}")
    son
son

Əsas fərqlər#

PythonAlqor
Girinti bloku müəyyən edirson bloku bitirir, girinti sərbəstdir
self açıq parametrdirözü avtomatikdir
TipsizTədrici tiplər
0, "", [] yanlış sayılırYalnız yanlış yanlışdır
GIL — həqiqi paralellik yoxdursap ilə həqiqi paralellik
__init__, __str__qurucu, mətnƏt

5.3 JavaScript-dən Alqor-a#

Nümunə 1 — asinxron#

javascript
// JavaScript
async function getUser(id) {
    const res = await fetch(`/api/user/${id}`);
    if (!res.ok) throw new Error("Not found");
    return await res.json();
}
Alqor
// Alqor
asinxron funksiya istifadəçiAl(id: tam) -> İstifadəçi
    dəyişən c = gözlə http.al("/api/istifadəçi/{id}")
    əgər deyil c.uğurludur() onda
        at Xəta("Tapılmadı")
    son
    qaytar c.json()
son

Nümunə 2 — massiv metodları#

javascript
// JavaScript
const result = users
    .filter(u => u.age > 18)
    .map(u => u.name)
    .sort();
Alqor
// Alqor
dəyişən nəticə = istifadəçilər
    .filtr((i) => i.yaş > 18)
    .çevir((i) => i.ad)
    .sıralanmış()

Nümunə 3 — komponent#

javascript
// React
function Counter() {
    const [count, setCount] = useState(0);
    return <button onClick={() => setCount(count+1)}>{count}</button>;
}
Alqor
// Alqor
komponent Sayğac
    vəziyyət say: tam = 0

    göstər()
        qaytar <button klik={() => özü.say += 1}>{özü.say}</button>
    son
son

Əsas fərqlər#

JavaScriptAlqor
== tip çevirir== çevirmir, həmişə sərtdir
undefined və nullyalnız boş
Prototip mirasıklassik siniflər
var hoistinghoisting yoxdur
Tək ip (event loop)sap ilə həqiqi paralellik
npm + node_modulesalqorpm + paketlər/
useState, useEffectvəziyyət, quraşdırıldı()

5.4 C#-dan Alqor-a#

Nümunə 1 — while dövrü#

csharp
// C#
int i = 1;
while (i <= 5)
{
    Console.WriteLine("Say: " + i);
    i++;
}
Alqor
// Alqor
dəyişən i = 1
nə qədər ki i <= 5
    yaz("Say: {i}")
    i++
son

Nümunə 2 — LINQ#

csharp
// C#
var result = users
    .Where(u => u.Age > 18)
    .Select(u => u.Name)
    .OrderBy(n => n)
    .ToList();
Alqor
// Alqor
dəyişən nəticə = istifadəçilər
    .filtr((i) => i.yaş > 18)
    .çevir((i) => i.ad)
    .sıralanmış()

Nümunə 3 — xassələr#

csharp
// C#
public class Rectangle {
    public double Width { get; set; }
    public double Height { get; set; }
    public double Area => Width * Height;
}
Alqor
// Alqor
sinif Düzbucaqlı
    açıq xassə en: onluq
    açıq xassə hündürlük: onluq

    xassə sahə: onluq
        oxu qaytar özü.en * özü.hündürlük son
    son
son

Əsas fərqlər#

C#Alqor
Nöqtəli vergül məcburilazım deyil
Fiqurlu mötərizə bloklarıson
Metod yükləmə (overload)yoxdur — standart dəyər və birləşmə tipi
IEnumerable<T>siyahı[T], generator
async Task<T>asinxron funksiya ... -> T
NuGetalqorpm
.NET runtime lazımdırtək statik binar

5.5 PHP-dən Alqor-a#

php
// PHP
<?php
for ($i = 1; $i <= 5; $i++) {
    echo "Rəqəm: " . $i . "<br>";
}
?>
Alqor
// Alqor (veb)
hər i üçün 1..5 içində
    yaz("Rəqəm: {i}")
son

Veb server müqayisəsi#

php
// PHP — Apache/nginx + PHP-FPM lazımdır
<?php
$users = $pdo->query("SELECT * FROM users")->fetchAll();
foreach ($users as $u) {
    echo "<li>" . htmlspecialchars($u['name']) . "</li>";
}
Alqor
// Alqor — heç nə lazım deyil, tək binar
dəyişən istifadəçilər = gözlə b.sorğu("SELECT * FROM istifadəçilər")
// şablonda:
// {% hər i üçün istifadəçilər içində %}<li>{{ i.ad }}</li>{% son %}
// htmlspecialchars avtomatikdir
PHPAlqor
$ prefiksiyoxdur
echoyaz
. birləşdirmə+ və ya "{x}"
->.
::.
Veb server lazımdırdaxili server
composeralqorpm
htmlspecialchars əl iləavtomatik

5.6 Tez-tez edilən səhvlər#

❌ son unudulur#

Alqor
əgər x > 5 onda
    yaz("böyük")
// ✖ ALQ-P002: `son` gözlənilirdi

❌ onda unudulur#

Alqor
əgər x > 5
    yaz("böyük")
son
// ✖ ALQ-P004: `onda` gözlənilirdi

❌ Şərtdə ədəd#

Alqor
əgər 1 onda ... son              // ✖ ALQ-T007
əgər siyahı onda ... son         // ✖ ALQ-T007

// Düzgün:
əgər x != 0 onda ... son
əgər deyil boşdur(siyahı) onda ... son

❌ Mətn + ədəd#

Alqor
yaz("Yaş: " + 24)                // ✖ ALQ-T008

// Düzgün:
yaz("Yaş: {24}")
yaz("Yaş: " + mətnƏt(24))

❌ özü unudulur#

Alqor
sinif A
    xassə ad: mətn
    metod f()
        yaz(ad)                  // ✖ ALQ-T050
        yaz(özü.ad)              // ✓
    son
son

❌ əvəz et unudulur#

Alqor
sinif B miras A
    metod f() ... son            // ✖ ALQ-T051
    əvəz et metod f() ... son    // ✓
son

❌ Onluq ayırıcı kimi vergül#

Alqor
yaz(3,14)                        // iki arqument: 3 və 14
yaz(3.14)                        // ✓ bir ədəd

❌ i++ ifadə daxilində#

Alqor
dəyişən b = i++                  // ✖ ALQ-P015
i++                              // ✓ müstəqil ifadə kimi
dəyişən b = i; i += 1            // ✓

❌ ASCII və Azərbaycan hərfləri qarışdırılır#

Alqor
dəyişən yaş = 24
yaz(yas)                         // ✖ ALQ-T022: `yas` təyin edilməyib

Dəyişən adlarında ASCII çevrilməsi yoxdur — yalnız açar sözlərdə var.


5.7 Köçürmə alətləri#

terminal
# Python kodundan ilkin Alqor skeleti yaradır
alqor köçür --mənbə python əsas.py

# JavaScript-dən
alqor köçür --mənbə js app.js

Bu alət avtomatik tərcümə deyil — 70-80% hazır kod verir, qalanını əl ilə yoxlamaq lazımdır. Xüsusilə tipləri və boş davranışını.


Növbəti: 6. Xəta Lüğəti